/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tarifador.view;

import br.com.tarifador.controller.GrupoDeTroncoRN;
import br.com.tarifador.dataModel.GrupoTroncoTableModel;
import br.com.tarifador.model.GrupoDeTronco;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.hibernate.HibernateException;
import org.primefaces.context.RequestContext;

/**
 *
 * @author charles
 */
@ManagedBean
@SessionScoped
public class GrupoTroncoBean {

    private GrupoDeTroncoRN grupoTroncoRN = new GrupoDeTroncoRN();
    private List<GrupoDeTronco> listaGrupoDeTronco;
    private GrupoDeTronco troncoSelected;
    private GrupoTroncoTableModel troncoModel;

    public void salvaGrupoDeGrupoDeTronco() {
        boolean salvar = false;
        try {
            salvar = grupoTroncoRN.salvaGrupoDeTronco();
        } catch (HibernateException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao consultar o banco de dados "+ e.getMessage(), ""));
        } catch (Throwable e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar os dados! " + e.getMessage(), ""));
        }
        if (salvar == false) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar dados em brancos!", ""));
        } else {
            listaGrupoDeTronco();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_INFO, "Operacao relizada com sucesso!!", ""));
        }
    }

    public void listaGrupoDeTronco() {
        listaGrupoDeTronco = new ArrayList<GrupoDeTronco>();
        try {
            listaGrupoDeTronco = grupoTroncoRN.listaDeGrupoDeTroncos();

        } catch (HibernateException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao consultar o banco de dados " + e.getMessage(), ""));
        } catch (Throwable e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar os dados! " + e.getMessage(), ""));
        }
        this.troncoModel = new GrupoTroncoTableModel(listaGrupoDeTronco);
    }

    public void alteraGrupoDeTronco() {
        boolean valida = false;
        try {
            valida = grupoTroncoRN.updateGrupoDeTronco(troncoSelected);

        } catch (HibernateException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao consultar o banco de dados " + e.getMessage(), ""));
        } catch (Throwable e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar os dados! " + e.getMessage(), ""));
        }
        if (valida == false) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar dados em brancos!", ""));
        } else {
            listaGrupoDeTronco();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_INFO, "Operacao relizada com sucesso!!", ""));

        }
    }

    public void deleteGrupoDeTronco() {
        boolean valida = false;
        try {
            valida = grupoTroncoRN.deletaGrupoDeTronco(troncoSelected.getId());
        } catch (NullPointerException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Selecione um campo!", ""));
        } catch (HibernateException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar os dados!\n " + e.getMessage(), ""));
        } catch (Throwable e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar os dados!\n " + e.getMessage(), ""));
        }
        if (valida == false) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar dados em brancos!", ""));
        } else {
            listaGrupoDeTronco();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_INFO, "Operacao relizada com sucesso!!", ""));
        }
    }

    public void btnAlterarGrupoDeTronco() {
        RequestContext request = RequestContext.getCurrentInstance();
        try {
            if (troncoSelected.getId() != null && troncoSelected.getId() > 0) {
                request.addCallbackParam("sucesso", true);
            } else {
                request.addCallbackParam("sucesso", false);
            }
        } catch (NullPointerException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Selecione um campo!", ""));
        }
    }

    public void limpaLista() {
        if (troncoModel != null) {
            listaGrupoDeTronco.clear();
            troncoModel = new GrupoTroncoTableModel(listaGrupoDeTronco);
        }
    }

    public List<GrupoDeTronco> getListaGrupoDeTronco() {
        return listaGrupoDeTronco;
    }

    public void setListaGrupoDeTronco(List<GrupoDeTronco> listaGrupoDeTronco) {
        this.listaGrupoDeTronco = listaGrupoDeTronco;
    }

    public GrupoDeTronco getGrupoDeTroncoSelected() {
        return troncoSelected;
    }

    public void setGrupoDeTroncoSelected(GrupoDeTronco troncoSelected) {
        this.troncoSelected = troncoSelected;
    }

    public GrupoTroncoTableModel getTroncoModel() {
        return troncoModel;
    }

    public void setTroncoModel(GrupoTroncoTableModel troncoModel) {
        this.troncoModel = troncoModel;
    }
    public GrupoDeTronco getTroncoSelected() {
        return troncoSelected;
    }

    public void setTroncoSelected(GrupoDeTronco troncoSelected) {
        this.troncoSelected = troncoSelected;
    }

    public GrupoDeTroncoRN getGrupoTroncoRN() {
        return grupoTroncoRN;
    }

    public void setGrupoTroncoRN(GrupoDeTroncoRN grupoTroncoRN) {
        this.grupoTroncoRN = grupoTroncoRN;
    }
    
}
